#!/bin/bash

# GuDB数据库系统演示脚本
# 启动GuDB高性能数据库系统

echo "🚀 GuDB数据库系统演示"
echo "====================="
echo "欢迎使用GuDB高性能数据库系统！"
echo ""

# 检查可执行文件是否存在
if [ ! -f "bin/gudb-server" ] || [ ! -f "bin/gu" ]; then
    echo "❌ 找不到GuDB可执行文件。请先运行构建命令："
    echo "   make -f scripts/Makefile.gudb all"
    echo ""
    echo "💡 如果构建失败，请检查："
    echo "   - 是否安装了必要的依赖: build-essential zlib1g-dev"
    echo "   - 是否有足够的磁盘空间"
    echo "   - 编译器版本是否支持 (GCC 4.9+ 或 Clang 3.5+)"
    exit 1
fi

echo "📋 GuDB系统特性："
echo "   ✅ 高性能原生协议 (专为GuDB优化)"
echo "   ✅ 专用端口 7777"
echo "   ✅ 轻量级gu客户端 (启动快速，响应迅速)"
echo "   ✅ 高性能gudb-server服务器 (资源占用低)"
echo "   ✅ 完整的ACID事务支持"
echo "   ✅ Bw-Tree无锁索引技术"
echo "   ✅ WAL日志系统"
echo "   ✅ 支持完整的SQL功能"
echo ""

# 检查端口是否被占用
if lsof -ti:7777 >/dev/null 2>&1; then
    echo "⚠️  检测到端口7777已被占用，正在停止现有服务器..."
    pkill -f gudb-server 2>/dev/null || true
    sleep 2
    echo "✅ 已停止现有服务器"
fi

echo "🔄 正在启动GuDB服务器..."
echo "   📍 监听地址: localhost"
echo "   🔌 服务端口: 7777"
echo "   📁 数据目录: /tmp/gudb_data"
echo "   👤 默认用户: admin"
echo "   🔐 默认密码: admin"
echo "   🧵 工作线程: 4个"
echo "   🔗 最大连接: 100个"
echo ""

# 在后台启动服务器
echo "🔄 启动中，请稍候..."
./bin/gudb-server -v > /tmp/gudb_server.log 2>&1 &
SERVER_PID=$!

# 等待服务器启动
sleep 3

# 检查服务器是否启动成功
if ! kill -0 $SERVER_PID 2>/dev/null; then
    echo "❌ GuDB服务器启动失败！请检查日志: /tmp/gudb_server.log"
    echo ""
    echo "🔍 常见问题排查："
    echo "   1. 检查端口是否被占用: lsof -i:7777"
    echo "   2. 检查数据目录权限: ls -la /tmp/gudb_data"
    echo "   3. 查看详细错误日志: cat /tmp/gudb_server.log"
    exit 1
fi

echo "✅ GuDB服务器启动成功！"
echo "   📈 服务器进程ID: $SERVER_PID"
echo "   📋 日志文件位置: /tmp/gudb_server.log"
echo ""

echo "💻 GuDB客户端使用指南："
echo ""
echo "🎯 基本用法："
echo "   1️⃣ 交互模式 (推荐新手):"
echo "      ./bin/gu -i"
echo ""
echo "   2️⃣ 单条命令执行:"
echo "      ./bin/gu \"SELECT 1\""
echo "      ./bin/gu \"SHOW DATABASES\""
echo "      ./bin/gu \"CREATE TABLE test (id INT, name TEXT)\""
echo ""
echo "   3️⃣ 连接远程服务器:"
echo "      ./bin/gu -h 远程主机 -P 7777 -u admin -p admin -i"
echo ""
echo "📚 获取帮助："
echo "   ./bin/gu --help           # 客户端帮助"
echo "   ./bin/gudb-server --help  # 服务器帮助"
echo ""

echo "🧪 正在测试GuDB连接..."
echo "测试客户端与服务器的连接性..."

# 测试连接
if echo "status" | ./bin/gu -v > /tmp/gu_test.log 2>&1; then
    echo "✅ GuDB客户端连接成功！"
    echo ""
    
    echo "📊 连接详情："
    grep -E "(Connected to|Host:|Port:|Connected:|Authenticated:)" /tmp/gu_test.log || true
    echo ""
    
    echo "🎉 GuDB系统运行正常！"
    echo ""
    echo "📝 客户端可用命令："
    echo "   help       - 显示可用命令"
    echo "   status     - 显示连接状态"
    echo "   ping       - 测试服务器连通性"
    echo "   quit       - 退出客户端"
    echo ""
    echo "🛠️ 管理命令："
    echo "   停止服务器: pkill -f gudb-server"
    echo "   查看日志:   tail -f /tmp/gudb_server.log"
    echo "   检查端口:   lsof -i:7777"
    echo ""
    echo "📱 服务器进程ID: $SERVER_PID"
    echo "📋 服务器日志: /tmp/gudb_server.log"
    echo "📋 客户端测试日志: /tmp/gu_test.log"
    
else
    echo "❌ 连接GuDB服务器失败！"
    echo "请检查以下日志文件获取详细信息："
    echo "   服务器日志: /tmp/gudb_server.log"
    echo "   客户端日志: /tmp/gu_test.log"
    echo ""
    echo "🔧 尝试手动诊断："
    echo "   1. 检查服务器是否运行: ps aux | grep gudb-server"
    echo "   2. 检查端口监听状态: netstat -tlnp | grep 7777"
    echo "   3. 测试手动连接: ./bin/gu --help"
    pkill -f gudb-server
    exit 1
fi

echo ""
echo "🎯 GuDB系统演示完成！"
echo "=========================="
echo ""
echo "🚀 快速开始使用："
echo "   立即体验: ./bin/gu -i"
echo "   查看状态: ./bin/gu -v"
echo "   执行查询: ./bin/gu \"SELECT 1\""
echo ""
echo "🎮 交互式体验："
echo "   1. 运行 ./bin/gu -i 进入交互模式"
echo "   2. 输入 help 查看所有可用命令"
echo "   3. 输入 status 查看连接状态"
echo "   4. 输入 ping 测试服务器响应"
echo "   5. 输入 quit 退出客户端"
echo ""
echo "📊 服务器管理："
echo "   🟢 服务器正在后台运行 (PID: $SERVER_PID)"
echo "   ⏹️  停止服务器: pkill -f gudb-server"
echo "   📋 查看实时日志: tail -f /tmp/gudb_server.log"
echo "   🔍 检查运行状态: ps aux | grep gudb-server"
echo ""
echo "🎉 恭喜！GuDB系统已成功运行，享受高性能数据库体验吧！"